layui.define(['jquery','upload','form','ax','table'],function (exports) {

    var $ = layui.$;
    var upload=layui.upload;
    var form=layui.form;
    var $ax=layui.ax;
    var table=layui.table;
    //



    /**
     *
     * @param url 请求的url
     * @param boxId 外层盒子 String
     */
    var $simtool = function (url,boxId) {
        this.url = url;
        this.type = "upload";
        this.data = {};
        this.boxId = boxId;
    };


    $simtool.prototype = {
        //图片上传
         uploadImg: function () {
              var box = $(this.boxId);
              var pic = box.find("img");
              var hiddenInput = box.find("input");
              var uploadButton = box.find("button");
             //图片上传
             upload.render({
                 elem: uploadButton //绑定元素
                 ,url: Feng.ctxPath+this.url //上传接口
                 ,before: function(obj){ //obj参数包含的信息，跟 choose回调完全一致，可参见上文。
                     obj.preview(function(index, file, result){
                         pic.attr("src",result)
                         layer.load(); //上传loading
                         //console.log(index); //得到文件索引
                         //console.log(file); //得到文件对象
                         //console.log(result); //得到文件base64编码，比如图片
                         //obj.resetFile(index, file, '123.jpg'); //重命名文件名，layui 2.3.0 开始新增
                         //这里还可以做一些 append 文件列表 DOM 的操作
                         //obj.upload(index, file); //对上传失败的单个文件重新上传，一般在某个事件中使用
                         //delete files[index]; //删除列表中对应的文件，一般在某个事件中使用
                     });
                 }
                 ,done: function(res){
                     console.log(res)//上传完毕回调
                     if(res.data!="null"){
                         hiddenInput.val(res.data)
                     }
                     pic.attr("src",Feng.ctxPath+res.data)
                     layer.closeAll('loading'); //关闭loading
                     Feng.info("上传成功")
                 }
                 ,error: function(){
                     layer.closeAll('loading'); //关闭loading
                     Feng.error("上传失败")
                     //请求异常回调
                 }
                 ,acceptMime: 'image/*'
                 ,accept: 'image' //允许上传的文件类型
                 ,size: 500 //最大允许上传的文件大小
             });
         },

        uploadVideo: function () {
              var button = $(this.boxId);
              var hiddenInput = button.parent().parent().find("input");
             //图片上传
             upload.render({
                 elem: button //绑定元素
                 ,url: Feng.ctxPath+this.url //上传接口
                 ,before: function(obj){
                     //obj参数包含的信息，跟choose回调完全一致，可参见上文。
                     obj.preview(function(index, file, result){
                         layer.load(); //上传loading
                     });
                 }
                 ,done: function(res){
                     console.log(res)//上传完毕回调
                     if(res.code!=200){
                         layer.closeAll('loading'); //关闭loading
                         Feng.error(res.message)
                         return;
                     }
                     if(res.data!="null"){
                         hiddenInput.val(res.data)
                     }
                     layer.closeAll('loading'); //关闭loading
                     Feng.info("上传成功")
                 }
                 ,error: function(){
                     layer.closeAll('loading'); //关闭loading
                     Feng.error("上传失败")
                     //请求异常回调
                 }
                 ,acceptMime: 'video/*'
                 ,accept: 'video' //允许上传的文件类型
                 ,size: 50000 //最大允许上传的文件大小
             });
         },
        //按钮的封装
        /**
         *  <script type="text/html" id="statusTpl">
            <input type="checkbox" lay-filter="status" value="{{d.id}}" lay-skin="switch"  lay-text="显示|隐藏" {{d.status=='1'?'checked':''}} />
            </script>
         * url
         * @param tableId 表格名
         * @param sw 按钮名 lay-filter, 此时参数名即为lay-filter 的的值
         * @param list 状态数组 list[0 ]：选中时对应的参数 list[1}：未选中时对应的参数
         */


         updateButton: function (url,tableId,sw,list) {
             form.on('switch('+sw+')', function (obj) {
                 var text = obj.othis.parent().text();
                 var id = obj.elem.value; //
                 obj.othis.parent().parent().find("input").attr("title",text);
                 var checked = obj.elem.checked ? true : false;
                 var data ={}
                 data["id"]=id
                 data[sw]=checked?list[0]:list[1] //sw ==> 参数名
                 var ajax = new $ax(Feng.ctxPath +url, function (data) {
                    // alert(obj.othis.parent().parent().html())
                     Feng.success("更新成功!");
                 }, function (data) {
                     Feng.error("更新失败!!"+data.responseJSON.message);
                     table.reload(tableId);
                 });
                 ajax.setData(data)
                 ajax.start();
             });

         },


    }
    exports('simTool', $simtool);

});